home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / system / vectmap.zip / VECTMAP.PAS < prev   
Pascal/Delphi Source File  |  1986-05-11  |  4KB  |  156 lines

  1.  
  2. (*
  3.  * vectmap - map system interrupt vectors
  4.  *
  5.  * author: S. H. Smith,  10-May-86
  6.  *
  7.  *)
  8.  
  9. {$P512,d-}
  10.  
  11. type
  12.    vector = record
  13.       offset: integer;
  14.       segment: integer;
  15.    end;
  16.  
  17.    anystring = string[40];
  18.  
  19. var
  20.    interrupt: array[0..$FF] of vector absolute 0:0;
  21.  
  22.  
  23.  
  24. function hex(i: integer): anystring;
  25. var
  26.   h: anystring;
  27.   d: integer;
  28.   c: char;
  29.  
  30. begin
  31.    h := '';
  32.  
  33.    for d := 1 to 4 do
  34.    begin
  35.       if (i and $0f) > 9 then
  36.          c := chr((i and $0f) + ord('0') + 7)
  37.       else
  38.          c := chr((i and $0f) + ord('0'));
  39.  
  40.       h := c + h;
  41.       i := i shr 4;
  42.    end;
  43.  
  44.    hex := h;
  45. end;
  46.  
  47.  
  48. procedure display_vector(n: integer);
  49. var
  50.    s: integer;
  51.    o: integer;
  52.  
  53. begin
  54.  
  55.    s := interrupt[n].segment;
  56.    o := interrupt[n].offset;
  57.    if (s = 0) and (o = 0) then
  58.       exit;
  59.  
  60.    write( copy(hex(n),3,2), '   ',
  61.           hex(s),':',
  62.           hex(o),'  ');
  63.  
  64.    case s of
  65.       $0000:  write(' Int vectors      ');
  66.       $0040:  write(' ROM BIOS data    ');
  67.       $0050:  write(' DOS data         ');
  68.       $0070:  write(' IO.SYS drivers   ');
  69.       $c800:  write(' Fixed disk ROM   ');
  70.       $f000:  write(' System ROM       ');
  71.       $fc00:  write(' BIOS ROM         ');
  72.  
  73.       else
  74.            if s = cseg then
  75.               write(' User program     ')
  76.            else if s = interrupt[$20].segment then
  77.               write(' DOS              ')
  78.            else if s = interrupt[$21].segment then
  79.               write(' DOS enhancement  ')
  80.            else if s = interrupt[$24].segment then
  81.               write(' COMMAND.COM      ')
  82.            else if (s < cseg) and (s > interrupt[$20].segment) then
  83.               write(' Resident utility ')
  84.            else
  85.               write(' ?                ');
  86.    end;
  87.  
  88.  
  89.    case n of
  90.       $00:  write(' Division by zero');
  91.       $01:  write(' Single step');
  92.       $02:  write(' Non-maskable interrupt');
  93.       $03:  write(' DEBUG breakpoint');
  94.       $04:  write(' Arithmetic overflow');
  95.       $05:  write(' Print screen');
  96.       $08:  write(' Hardware clock tick');
  97.       $09:  write(' Keyboard action');
  98.       $0d:  write(' Vertical retrace');
  99.       $0e:  write(' Diskette attention (completion)');
  100.       $0f:  write(' Printer control');
  101.       $10:  write(' Video display services');
  102.       $11:  write(' Equipment list services');
  103.       $12:  write(' Memory size services');
  104.       $13:  write(' Diskette services');
  105.       $14:  write(' Communication services');
  106.       $15:  write(' Cassette tape services');
  107.       $16:  write(' Standard keyboard services');
  108.       $17:  write(' Printer services');
  109.       $18:  write(' Activate ROM basic');
  110.       $19:  write(' Boot-strap start-up');
  111.       $1a:  write(' Time and date services');
  112.       $1b:  write(' Keyboard break handler');
  113.       $1c:  write(' Clock tick handler');
  114.       $1d:  write(' Video control parameter table');
  115.       $1e:  write(' Disk base table');
  116.       $1f:  write(' High video graphics character table');
  117.       $20:  write(' DOS program terminate service');
  118.       $21:  write(' DOS function call services');
  119.       $22:  write(' User program terminate handler');
  120.       $23:  write(' User keyboard break handler');
  121.       $24:  write(' User critical error handler');
  122.       $25:  write(' DOS absolute disk read');
  123.       $26:  write(' DOS absolute disk write');
  124.       $27:  write(' DOS terminate and stay resident');
  125.       $44:  write(' Low video graphics character table (PCjr)');
  126.       $48:  write(' Translate PCjr keyboard');
  127.       $49:  write(' Keyboard-supplement device translation table');
  128.  
  129.       else  write(' ?');
  130.    end;
  131.  
  132.    writeln;
  133.    flush(output);
  134. end;
  135.  
  136.  
  137. var
  138.    int:       integer;
  139.  
  140.  
  141. begin
  142.    writeln;
  143.    write('VECTMAP - Map of system interrupt vectors');
  144.    writeln('             10-May-86, S.H.Smith');
  145.    writeln;
  146.  
  147.    writeln;
  148.    writeln('Int   Handler        Handler             Interrupt');
  149.    writeln('no    address      description          description');
  150.    writeln('---  ---------   ---------------   ----------------------');
  151.  
  152.  
  153.    for int := 0 to $ff do
  154.       display_vector(int);
  155. end.
  156.